//app.js
App({

  globalData: {
    share: false, // 分享默认为false
    height: 0,
    imageUrl: "",//这是你的oss地址,用来展示图片,后面加斜杠
    userId: -1,
    userInfo: {},
    userIsAdmin: -1,
    isUpdate: -1,
    env: 'prod-7gmjyld21d3ce134',
    lost_new: {},
    user_message: [],
    allCategoryMessage: [],
    shopMessage: [],
    swiperImages: [],
    noticeMessage: [],
    messageDetail:{},
  },
  /**
   * 封装的微信云托管调用方法
   * @param {*} obj 业务请求信息，可按照需要扩展
   * @param {*} number 请求等待，默认不用传，用于初始化等待
   */
  async call(obj, number=0){
    const that = this
    if(that.cloud == null){
      that.cloud = new wx.cloud.Cloud({
        resourceAppid: 'wx8cdb755f6ba3a118', // 微信云托管环境所属账号，服务商appid、公众号或小程序appid
        resourceEnv: that.globalData.env, // 微信云托管的环境ID
      })
      await that.cloud.init() // init过程是异步的，需要等待 init 完成才可以发起调用
    }
    try{
      const result = await that.cloud.callContainer({
        path: obj.path, // 填入业务自定义路径和参数，根目录，就是 / 
        method: obj.method||'GET', // 按照自己的业务开发，选择对应的方法
        // dataType:'text', // 如果返回的不是 json 格式，需要添加此项
        header: {
          'content-type': obj.content || 'application/x-www-form-urlencoded;charset=UTF-8',
          'Accept': 'application/json',
          'X-WX-SERVICE': 'springboot-ny1e'
          // 'X-WX-SERVICE': 'gs_online'
        },
        data:obj.data
      })
      console.log(`微信云托管调用结果${result.errMsg} | callid:${result.callID}`)
      console.log("返回结果："+result.data) // 业务数据在 data 中
      return result
    } catch(e){
      const error = e.toString()
       // 如果错误信息为未初始化，则等待300ms再次尝试，因为 init 过程是异步的
      if(error.indexOf("Cloud API isn't enabled")!=-1 && number<3){
        return new Promise((resolve)=>{
          setTimeout(function(){
            resolve(that.call(obj,number+1))
          },300)
        })
      } else {
        throw new Error(`微信云托管调用失败${error}`)
      }
    }
  },
  onLaunch: function (options) {

    wx.showLoading({
      title: '努力加载中~',
    })
    let that = this;
    // 判断是否由分享进入小程序
    if (options.scene == 1007 || options.scene == 1008) {
      this.globalData.share = true
    } else {
      this.globalData.share = false
    };
    //获取设备顶部窗口的高度（不同设备窗口高度不一样，根据这个来设置自定义导航栏的高度）
    //这个最初我是在组件中获取，但是出现了一个问题，当第一次进入小程序时导航栏会把
    //页面内容盖住一部分,当打开调试重新进入时就没有问题，这个问题弄得我是莫名其妙
    //虽然最后解决了，但是花费了不少时间
    wx.getSystemInfo({
      success: (res) => {
        that.globalData.height = res.statusBarHeight
      }
    })

    wx.getStorage({
      key: 'userId',
      success: function (res) {
        that.globalData.userId = res.data
      },
    })

    wx.getStorage({
      key: 'userInfo',
      success: function (res) {
        that.globalData.userInfo = res.data
      },
    })
    wx.getStorage({
      key: 'userIsAdmin',
      success: function (res) {
        that.globalData.userIsAdmin = res.data
      },
    })   
    wx.hideLoading()
  },
})
